Android — Fastjson
前言
最近看好多优秀项目中都集成了Fastjson,最开始并没在意。因为感觉Android系统自带的JSONObject解析还蛮简单呀,而且性能还可以。感觉唯一一点不好的就是数组嵌套数组的时候JSONObject和JSONArray相互转化会搞得我好乱。但是,那么多人用,那肯定有它的优点所在,又是BAT出品,绝对一试。看文档已经惊了,号称:
目前 Java 语言中最快的 JSON 库
就冲这句话,就一定要学了,就喜欢这种自信!官方文档介绍如下:
Fastjson提供Android版本,和标准版本相比,Android版本去掉一些Android虚拟机dalvik不支持的功能,使得jar更小,同时针对dalvik做了很多性能优化,包括减少方法调用等。parse为JSONObject/JSONArray时比原生org.json速度快,序列化反序列化JavaBean性能比jackson/gson性能更好。
但是很可惜,文档写的很一般。
第一步
添加依赖:
1
| compile 'com.alibaba:fastjson:1.1.65.android'
|
看 官方文档 ,里面给的例子是 JSON String 和 JavaBean 的相互转化。
实践出真知,假如解析以下 JSON (来自有道翻译 API):
解析翻译和释义:
1 2 3 4 5 6
| String jsonString = response.body().string(); JSONObject object = JSON.parseObject(jsonString); JSONObject objectBasic = (JSONObject) object.get("basic"); JSONArray jsonArray = objectBasic.getJSONArray("explains"); JSONArray array = object.getJSONArray("translation"); String result = array.toJSONString() + jsonArray.toJSONString();
|
实际上和使用原生的 JSONObject / JSONArray 好像并没有什么区别,其实并不然。看官方文档,我们可得知,Fastjson 可以将 Json 数据转换为一个 JavaBean 对象。下面我们就用一个小例子来演示一下:
首先创建 JavaBean:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| public class FastJsonGroup { private String query; private long errorCodeQuery; public String getQuery() { return query; } public void setQuery(String query) { this.query = query; } public long getErrorCodeQuery() { return errorCodeQuery; } public void setErrorCodeQuery(long errorCodeQuery) { this.errorCodeQuery = errorCodeQuery; } }
|
Json 数据:
1
| {"query":"ill","errorCode":0}
|
转换就很简单了:
1 2 3
| String test = "{\"query\":\"ill\",\"errorCode\":0}"; FastJsonGroup group = JSON.parseObject(test, FastJsonGroup.class); System.out.println("ErrorCode: "+group.getErrorCodeQuery() +" Query: "+ group.getQuery());
|
最后,关于将 JavaBean 转换为 Json 可以查看官方文档,还是很好理解的,下面会给出链接。
参考:
https://github.com/alibaba/fastjson/wiki/Samples-DataBind
http://www.jianshu.com/p/013e89d8cf17
http://www.jianshu.com/p/faadf4f1392e
http://www.cnblogs.com/hsqdboke/p/5545183.html